package com.example.design_pattern.singleton.threadsafe;

public class Singleton2 {

    // 利用静态变量来记录唯一实例
    private static Singleton2 singletonUnique;

    // 私有化构造器，防止外部调用
    private Singleton2() {

    }

    // 此处非线程安全，多线程下容易引发异常
    // 添加 synchronized 字段 可以使该方法，线程安全，但是每次调用 getInstance()时，都需要同步，影响性能
    public synchronized Singleton2 getInstance(){
        if (singletonUnique == null){
            singletonUnique = new Singleton2();
        }
        return singletonUnique;
    }
}
